/*
 * BSP_GPIO_CONFIG.h
 *
 *  Created on: May 23, 2022
 *      Author: xiaofei.wang
 */

#ifndef _GPIO_CONFIG_H
#define _GPIO_CONFIG_H	 
#include "stm32G4xx_hal.h"
#include <stdint.h>

// input
#define MCU_EXT_KEY_IN ( unsigned char )( 1 ) // E5
#define MCU_USB_ERR_IN ( unsigned char )( 2 ) // E0
#define MCU_IO_IN3 ( unsigned char )( 3 ) // E4
#define MCU_IO_IN4 ( unsigned char )( 4 ) // E2

// output
#define MCU_PH9_485RE ( unsigned char )( 1 ) // D10

#define Start_Stop_Pin          GPIO_PIN_13
#define Start_Stop_GPIO_Port    GPIOC
#define Start_Stop_EXTI_IRQn    EXTI15_10_IRQn

#define M1_CURR_AMPL_W_Pin          GPIO_PIN_0
#define M1_CURR_AMPL_W_GPIO_Port    GPIOC

#define M1_CURR_AMPL_V_Pin          GPIO_PIN_1
#define M1_CURR_AMPL_V_GPIO_Port    GPIOC

#define M1_TEMPERATURE_Pin          GPIO_PIN_2
#define M1_TEMPERATURE_GPIO_Port    GPIOC

#define M1_CURR_AMPL_U_Pin          GPIO_PIN_0
#define M1_CURR_AMPL_U_GPIO_Port    GPIOA

#define M1_BUS_VOLTAGE_Pin          GPIO_PIN_1
#define M1_BUS_VOLTAGE_GPIO_Port    GPIOA

#define M1_ENCODER_B_Pin            GPIO_PIN_7
#define M1_ENCODER_B_GPIO_Port      GPIOA

#define UART_TX_Pin                 GPIO_PIN_4
#define UART_TX_GPIO_Port           GPIOC

#define UART_RX_Pin                 GPIO_PIN_5
#define UART_RX_GPIO_Port           GPIOC

#define M1_HALL_H3_Pin              GPIO_PIN_10
#define M1_HALL_H3_GPIO_Port        GPIOB

#define M1_ENCODER_A_Pin            GPIO_PIN_6
#define M1_ENCODER_A_GPIO_Port      GPIOC

#define M1_PWM_UH_Pin               GPIO_PIN_8
#define M1_PWM_UH_GPIO_Port         GPIOA

#define M1_PWM_VH_Pin               GPIO_PIN_9
#define M1_PWM_VH_GPIO_Port         GPIOA

#define M1_PWM_WH_Pin               GPIO_PIN_10
#define M1_PWM_WH_GPIO_Port         GPIOA

#define M1_DP_Pin                   GPIO_PIN_11
#define M1_DP_GPIO_Port             GPIOA

#define TMS_Pin                     GPIO_PIN_13
#define TMS_GPIO_Port               GPIOA

#define TCK_Pin                     GPIO_PIN_14
#define TCK_GPIO_Port               GPIOA

#define M1_HALL_H1_Pin              GPIO_PIN_15
#define M1_HALL_H1_GPIO_Port        GPIOA

#define M1_PWM_EN_U_Pin             GPIO_PIN_10
#define M1_PWM_EN_U_GPIO_Port       GPIOC

#define M1_PWM_EN_V_Pin             GPIO_PIN_11
#define M1_PWM_EN_V_GPIO_Port       GPIOC

#define M1_PWM_EN_W_Pin             GPIO_PIN_12
#define M1_PWM_EN_W_GPIO_Port       GPIOC

#define M1_HALL_H2_Pin              GPIO_PIN_3
#define M1_HALL_H2_GPIO_Port        GPIOB


void vMxGpioInit(void);
uint8_t u8GpioInput( uint8_t );
void vGpioOutPut( uint8_t, uint8_t );
void vGpioOutPutToggle( uint8_t );
uint8_t u8GetBoardId( void );
void vResetUsbHost( void );
void vGpioLedCtrl( uint8_t u8LedSts );
void vGpioReserveLedCtrl( uint8_t u8LedSts );
void vGpioFanPwmToggle( void );
void vGpioFanCtrl( uint8_t u8FanSts );
#endif
